from __future__ import annotations
from abc import ABC, abstractmethod
from enum import Enum


class Beverage(ABC):
    class Size(Enum):
        TALL = 1,
        GRANDE = 2,
        VENTI = 3

    def __init__(self):
        self._size = self.Size.TALL

    @property
    def size(self) -> Size:
        return self._size

    @size.setter
    def size(self, value: Size):
        self._size = value

    @property
    def description(self):
        return "Unknown Beverage"

    def get_description(self):
        return self.description

    @abstractmethod
    def cost(self) -> float:
        ...


class DarkRoast(Beverage):
    @property
    def description(self):
        return "Dark Roast Coffee"

    def cost(self):
        return .99


class Decaf(Beverage):
    @property
    def description(self):
        return "Decaf Coffee"

    def cost(self):
        return 1.05


class Espresso(Beverage):
    @property
    def description(self):
        return "Espresso"

    def cost(self):
        return 1.99


class HouseBlend(Beverage):
    @property
    def description(self):
        return "House Blend Coffee"

    def cost(self):
        return .89